home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / Expanders / GetFile / edit.c next >
Encoding:
C/C++ Source or Header  |  1997-06-17  |  6.6 KB  |  204 lines

  1. /*
  2.     C source code created by Interface Editor
  3.     Copyright © 1994-1996 by Simone Tellini
  4.  
  5.     Generator:  C_IE_Mod.generator 37.1 (29.4.96)
  6.  
  7.     Copy registered to :  UNREGISTERED DEMO VERSION - PLEASE SUPPORT THE SHAREWARE CONCEPT
  8.     Serial Number      : #5
  9. */
  10.  
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/gadtools.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/intuition_protos.h>
  18. #include <clib/gadtools_protos.h>
  19. #include <clib/graphics_protos.h>
  20. #ifdef PRAGMAS
  21. #include <pragmas/exec_pragmas.h>
  22. #include <pragmas/intuition_pragmas.h>
  23. #include <pragmas/graphics_pragmas.h>
  24. #include <pragmas/gadtools_pragmas.h>
  25. #endif
  26. #include <ctype.h>
  27. #include <string.h>
  28.  
  29. #include "DEV_IE:Include/IEditor.h"
  30.  
  31. #include "Edit.h"
  32.  
  33.  
  34. UWORD MainGTypes[] = {
  35.         BUTTON_KIND,
  36.         BUTTON_KIND,
  37.         STRING_KIND,
  38.         CHECKBOX_KIND,
  39.         NULL };
  40.  
  41. struct TextAttr topaz8_065 = {
  42.         (STRPTR)"topaz.font", 8, 0x0, 0x41 };
  43.  
  44. struct NewGadget MainNGad[] = {
  45.         5, 54, 91, 14, "_Ok", &topaz8_065, GD_Ok, NULL, NULL, (APTR)OkClicked,
  46.         153, 54, 91, 14, "_Cancel", &topaz8_065, GD_Canc, NULL, NULL, (APTR)CancClicked,
  47.         79, 14, 153, 14, "_Label :", &topaz8_065, GD_Label, NULL, NULL, (APTR)LabelClicked,
  48.         204, 33, 26, 11, "_Disabled :", NULL, GD_Disabled, NULL, NULL, (APTR)DisabledClicked
  49. };
  50.  
  51. ULONG MainGTags[] = {
  52.         (GT_Underscore), '_', (TAG_DONE),
  53.         (GT_Underscore), '_', (TAG_DONE),
  54.         (GT_Underscore), '_', (GTST_MaxChars), 40, (TAG_DONE),
  55.         (GT_Underscore), '_', (TAG_DONE)
  56. };
  57.  
  58. void CloseWnd( struct Window **Wnd, struct Gadget **GList )
  59. {
  60.         if( *Wnd ) {
  61.                 CloseWindow( *Wnd );
  62.                 *Wnd = NULL;
  63.         }
  64.         if( GList ) {
  65.                 FreeGadgets( *GList );
  66.                 *GList = NULL;
  67.         }
  68. }
  69.  
  70. __geta4 LONG OpenMainWindow( struct Window **Wnd, struct Gadget **GList, struct Gadget *Gadgets[], struct IE_Data *IE )
  71. {
  72.         LONG            ret_code = NULL;
  73.         struct Gadget           *g;
  74.         UWORD                   lc, tc;
  75.         struct NewGadget        ng;
  76.  
  77.         if(!( g = CreateContext( GList )))
  78.                 return( 1L );
  79.  
  80.         for( lc = 0, tc = 0; lc < Main_CNT; lc++ ) {
  81.  
  82.                 CopyMem(( char * )&MainNGad[ lc ], ( char * )&ng, ( long )sizeof( struct NewGadget ));
  83.                 ng.ng_VisualInfo = IE->ScreenData->Visual;
  84.                 ng.ng_TopEdge  += IE->ScreenData->YOffset;
  85.                 ng.ng_LeftEdge += IE->ScreenData->XOffset;
  86.                 Gadgets[ lc ] = g = CreateGadgetA((ULONG)MainGTypes[ lc ], g, &ng, (struct TagItem *)&MainGTags[ tc ] );
  87.  
  88.                 while( MainGTags[ tc ] ) tc += 2;
  89.                 tc++;
  90.  
  91.                 if( !g )
  92.                         return( 2L );
  93.         }
  94.  
  95.         struct TagItem WTags[] = {
  96.                 { WA_Left, 86 },
  97.                 { WA_Top, 78 },
  98.                 { WA_Width, 250 + IE->ScreenData->XOffset },
  99.                 { WA_Height, 74 + IE->ScreenData->YOffset },
  100.                 { WA_MinWidth, 0 },
  101.                 { WA_MaxWidth, -1 },
  102.                 { WA_MinHeight, 0 },
  103.                 { WA_MaxHeight, -1 },
  104.                 { WA_PubScreen,(ULONG)(IE->ScreenData->Screen)},
  105.                 { WA_Title, (ULONG)"GetFile" },
  106.                 { WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP },
  107.                 { WA_IDCMP, BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_VANILLAKEY },
  108.                 { WA_Gadgets, (ULONG)*GList },
  109.                 { TAG_DONE, NULL }
  110.         };
  111.  
  112.         if(!( *Wnd = OpenWindowTagList( NULL, &WTags[0] )))
  113.                 return( 4L );
  114.  
  115.         GT_RefreshWindow( *Wnd, NULL );
  116.  
  117.         MainRender( *Wnd, IE );
  118.         return( 0L );
  119. }
  120.  
  121. void MainRender( struct Window *Wnd, struct IE_Data *IE )
  122. {
  123. struct TagItem DBTags[] = {
  124.                           {GT_VisualInfo, (ULONG)(IE->ScreenData->Visual)},
  125.                           {GTBB_Recessed, TRUE},
  126.                           {TAG_DONE, NULL}
  127.                           };
  128.         DrawBevelBoxA( Wnd->RPort, 4 + IE->ScreenData->XOffset, 2 + IE->ScreenData->YOffset, 239, 50, &DBTags[0]);
  129.  
  130. }
  131.  
  132. LONG HandleMainIDCMP( struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE )
  133. {
  134.         struct IntuiMessage     *m, Msg;
  135.         BOOL                    (*func)( struct Window *, struct Gadget **, struct IE_Data *, struct IntuiMessage * );
  136.         BOOL                    running = TRUE;
  137.         int                     class;
  138.         short                   code;
  139.         struct Gadget   *gad;
  140.  
  141.         while( m = GT_GetIMsg( Wnd->UserPort )) {
  142.  
  143.                 class = m->Class;
  144.                 code  = m->Code;
  145.                 gad   = (struct Gadget *)m->IAddress;
  146.  
  147.                 CopyMem((char *)m, (char *)&Msg, (long)sizeof( struct IntuiMessage ));
  148.  
  149.                 GT_ReplyIMsg( m );
  150.  
  151.                 switch( class ) {
  152.  
  153.                         case    IDCMP_GADGETUP:
  154.                         case    IDCMP_GADGETDOWN:
  155.                                 func = gad->UserData;
  156.                                 running = (*func)( Wnd, Gadgets, IE, &Msg );
  157.                                 break;
  158.  
  159.                         case    IDCMP_VANILLAKEY:
  160.                                 running = HandleMainKeys( code, Wnd, Gadgets, IE, &Msg );
  161.                                 break;
  162.  
  163.                         case    IDCMP_REFRESHWINDOW:
  164.                                 GT_BeginRefresh( Wnd );
  165.                                 MainRender( Wnd, IE );
  166.                                 GT_EndRefresh( Wnd, TRUE );
  167.                                 break;
  168.  
  169.                 }
  170.         }
  171.         return( running );
  172. }
  173.  
  174. BOOL HandleMainKeys( UBYTE Code, struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE, struct IntuiMessage *Msg )
  175. {
  176.         BOOL running = TRUE;
  177.  
  178.         switch( Code ) {
  179.  
  180.                 case    'O':
  181.                         running = OkKeyPressed( Wnd, Gadgets, IE, Msg );
  182.                         break;
  183.  
  184.                 case    'C':
  185.                         running = CancKeyPressed( Wnd, Gadgets, IE, Msg );
  186.                         break;
  187.  
  188.                 case    'L':
  189.                         if(!( Gadgets[ GD_Label ]->Flags & GFLG_DISABLED ))
  190.                                 ActivateGadget( Gadgets[ GD_Label ], Wnd, NULL );
  191.                         break;
  192.  
  193.                 case    'D':
  194.                         running = DisabledKeyPressed( Wnd, Gadgets, IE, Msg );
  195.                         break;
  196.  
  197.                 default:
  198.                         running = MainVanillaKey( Code, Wnd, Gadgets, IE );
  199.                         break;
  200.  
  201.         }
  202.         return( running );
  203. }
  204.